﻿package mortal.game.utils
{
    import Message.Public.*;
    import extend.language.*;
    import flash.utils.*;
    import mortal.game.cache.*;
    import mortal.game.events.*;
    import mortal.game.manager.*;
    import mortal.game.mvc.*;
    import mortal.game.resource.*;
    import mortal.game.resource.info.item.*;
    import mortal.game.view.guide.*;
    import mortal.mvc.core.*;

    public class GiftsUtil extends Object
    {
        public static var currentGiftType:String;
        public static var notToUseGiftDic:Dictionary = new Dictionary();

        public function GiftsUtil()
        {
            return;
        }// end function

        public static function clearNotToUseGiftDic() : void
        {
            notToUseGiftDic = new Dictionary();
            return;
        }// end function

        public static function isCanUseGift(param1:int, param2:int, param3:int, param4:int = 2147483647) : Boolean
        {
            var _loc_6:ItemGiftBagInfo = null;
            var _loc_7:ItemData = null;
            var _loc_8:ItemData = null;
            var _loc_9:Array = null;
            var _loc_10:String = null;
            var _loc_11:Array = null;
            var _loc_12:ItemInfo = null;
            var _loc_13:GuideUseItemData = null;
            var _loc_5:* = Cache.instance.pack.backPackCache.getItemsByGroupAndCategory(EGroup._EGroupProp, EProp._EPropGiftBag);
            _loc_5.sort(sortArr);
            for each (_loc_8 in _loc_5)
            {
                
                _loc_6 = ItemConfig.instance.getConfig(_loc_8.itemInfo.code) as ItemGiftBagInfo;
                if (ItemsUtil.isPrescriOutTime(_loc_8))
                {
                    continue;
                }
                if (notToUseGiftDic[_loc_6.group + "_" + _loc_6.category + "_" + _loc_6.type] == true)
                {
                    return false;
                }
                _loc_9 = _loc_6.itemList1.split("&");
                for each (_loc_10 in _loc_9)
                {
                    
                    _loc_11 = _loc_10.split("#");
                    if (ItemsUtil.isFixedGiftBag(_loc_8))
                    {
                        _loc_12 = ItemConfig.instance.getConfig(int(_loc_11[1]));
                    }
                    else if (ItemsUtil.isZuandanPackage(_loc_8))
                    {
                        _loc_12 = ItemConfig.instance.getConfig(int(_loc_11[1]));
                    }
                    else if (ItemsUtil.isMulSelBag(_loc_8))
                    {
                        _loc_12 = ItemConfig.instance.getConfig(int(_loc_11[0]));
                    }
                    if (_loc_12 && _loc_12.group == param1 && _loc_12.category == param2 && _loc_12.type == param3 && param4 >= _loc_12.effect)
                    {
                        _loc_7 = _loc_8;
                        currentGiftType = _loc_6.group + "_" + _loc_6.category + "_" + _loc_6.type;
                        break;
                    }
                }
            }
            if (_loc_7)
            {
                if (ItemsUtil.isFixedGiftBag(_loc_7))
                {
                    _loc_13 = new GuideUseItemData();
                    _loc_13.itemData = _loc_7;
                    _loc_13.isGuideToUseItem = true;
                    _loc_13.isCountdown = false;
                    _loc_13.showTxt = Language.getStringByParam(20690, ItemsUtil.getItemName(_loc_8, "[{0}]"));
                    _loc_13.isUseMaxNum = true;
                    Dispatcher.dispatchEvent(new DataEvent(EventName.AutoGuideShowBackPackItem, _loc_13));
                    MsgManager.showRollTipsMsg(Language.getString(20691));
                }
                else
                {
                    Dispatcher.dispatchEvent(new DataEvent(EventName.BackPack_Use, _loc_7));
                    MsgManager.showRollTipsMsg(Language.getString(20692));
                }
            }
            return _loc_7 != null;
        }// end function

        private static function sortArr(param1:ItemData, param2:ItemData) : int
        {
            if (ItemsUtil.isFixedGiftBag(param1) && !ItemsUtil.isFixedGiftBag(param1))
            {
                return -1;
            }
            if (!ItemsUtil.isFixedGiftBag(param1) && ItemsUtil.isFixedGiftBag(param1))
            {
                return 1;
            }
            if (param1.itemCode < param2.itemCode)
            {
                return -1;
            }
            return 1;
        }// end function

        public static function isCanUseFreeGift(param1:int, param2:int, param3:int, param4:int = 2147483647, ... args) : Boolean
        {
            args = null;
            var _loc_7:int = 0;
            var _loc_8:GuideUseItemData = null;
            for each (_loc_7 in args)
            {
                
                args = isCacnUseGiftByGiftType(_loc_7, param1, param2, param3, param4);
                if (args)
                {
                    break;
                }
            }
            if (args)
            {
                _loc_8 = new GuideUseItemData();
                _loc_8.itemData = args;
                _loc_8.isGuideToUseItem = true;
                _loc_8.isCountdown = false;
                _loc_8.showTxt = Language.getStringByParam(20690, ItemsUtil.getItemName(args, "[{0}]"));
                _loc_8.isUseMaxNum = true;
                Dispatcher.dispatchEvent(new DataEvent(EventName.AutoGuideShowBackPackItem, _loc_8));
            }
            return args != null;
        }// end function

        public static function isCacnUseGiftByGiftType(param1:int, param2:int, param3:int, param4:int, param5:int = 2147483647, param6:Boolean = false) : ItemData
        {
            var _loc_8:ItemGiftBagInfo = null;
            var _loc_9:ItemData = null;
            var _loc_10:ItemData = null;
            var _loc_11:Array = null;
            var _loc_12:String = null;
            var _loc_13:Array = null;
            var _loc_14:ItemInfo = null;
            var _loc_7:* = Cache.instance.pack.backPackCache.getItemsByGroupCategoryAndType(EGroup._EGroupProp, EProp._EPropGiftBag, param1);
            _loc_7.sort(sortArr);
            for each (_loc_10 in _loc_7)
            {
                
                _loc_8 = ItemConfig.instance.getConfig(_loc_10.itemInfo.code) as ItemGiftBagInfo;
                if (ItemsUtil.isPrescriOutTime(_loc_10))
                {
                    continue;
                }
                _loc_11 = _loc_8.itemList1.split("&");
                for each (_loc_12 in _loc_11)
                {
                    
                    _loc_13 = _loc_12.split("#");
                    _loc_14 = ItemConfig.instance.getConfig(int(_loc_13[1]));
                    if (param6 && ItemsUtil.isMulSelBag(_loc_10))
                    {
                        if (int(_loc_13[4]) > 0)
                        {
                            continue;
                        }
                    }
                    if (_loc_14 && _loc_14.group == param2 && _loc_14.category == param3 && _loc_14.type == param4 && param5 >= _loc_14.effect)
                    {
                        _loc_9 = _loc_10;
                        currentGiftType = _loc_8.group + "_" + _loc_8.category + "_" + _loc_8.type;
                        break;
                    }
                }
            }
            return _loc_9;
        }// end function

    }
}
